home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / var / db / pkg / dev-lang / python-2.4.2 / python-2.4.2.ebuild < prev    next >
Text File  |  2005-10-18  |  9KB  |  282 lines

  1. # Copyright 1999-2005 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Header: /var/cvsroot/gentoo-x86/dev-lang/python/python-2.4.2.ebuild,v 1.11 2005/10/16 02:35:18 vapier Exp $
  4.  
  5. # NOTE about python-portage interactions :
  6. # - Do not add a pkg_setup() check for a certain version of portage
  7. #   in dev-lang/python. It _WILL_ stop people installing from
  8. #   Gentoo 1.4 images.
  9.  
  10. inherit eutils flag-o-matic python multilib versionator toolchain-funcs
  11.  
  12. # we need this so that we don't depends on python.eclass
  13. PYVER_MAJOR=$(get_major_version)
  14. PYVER_MINOR=$(get_version_component_range 2)
  15. PYVER="${PYVER_MAJOR}.${PYVER_MINOR}"
  16.  
  17. MY_P="Python-${PV}"
  18. S="${WORKDIR}/${MY_P}"
  19. DESCRIPTION="Python is an interpreted, interactive, object-orientated programming language."
  20. HOMEPAGE="http://www.python.org/"
  21. SRC_URI="http://www.python.org/ftp/python/${PV}/${MY_P}.tar.bz2"
  22.  
  23. LICENSE="PSF-2.2"
  24. SLOT="2.4"
  25. KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ~ppc64 s390 sh sparc x86"
  26. IUSE="ncurses gdbm ssl readline tcltk berkdb bootstrap ipv6 build ucs2 doc X nocxx"
  27.  
  28. DEPEND=">=sys-libs/zlib-1.1.3
  29.     !dev-python/cjkcodecs
  30.     !build? (
  31.         X? ( tcltk? ( >=dev-lang/tk-8.0 ) )
  32.         ncurses? ( >=sys-libs/ncurses-5.2 readline? ( >=sys-libs/readline-4.1 ) )
  33.         berkdb? ( >=sys-libs/db-3.1 )
  34.         gdbm? ( sys-libs/gdbm )
  35.         ssl? ( dev-libs/openssl )
  36.         doc? ( =dev-python/python-docs-${PV}* )
  37.         dev-libs/expat
  38.     )"
  39.  
  40. # NOTE: The dev-python/python-fchksum RDEPEND is needed so that this python 
  41. #       provides the functionality expected from previous pythons.
  42.  
  43. # NOTE: python-fchksum is only a RDEPEND and not a DEPEND since we don't need
  44. #       it to compile python. We just need to ensure that when we install
  45. #       python, we definitely have fchksum support. - liquidx
  46.  
  47. # NOTE: changed RDEPEND to PDEPEND to resolve bug 88777. - kloeri
  48.  
  49. PDEPEND="${DEPEND}     dev-python/python-fchksum"
  50.  
  51. PROVIDE="virtual/python"
  52.  
  53. src_unpack() {
  54.     unpack ${A}
  55.     cd ${S}
  56.  
  57.     # unnecessary termcap dep in readline (#79013)
  58.     epatch ${FILESDIR}/${PN}-2.4.2-readline.patch
  59.     # db4.2 support
  60.     epatch ${FILESDIR}/${PN}-2.4.1-db4.patch
  61.  
  62.     # adds support for PYTHON_DONTCOMPILE shell environment to
  63.     # supress automatic generation of .pyc and .pyo files - liquidx (08 Oct 03)
  64.     epatch ${FILESDIR}/${PN}-${PYVER}-gentoo_py_dontcompile.patch
  65.     epatch ${FILESDIR}/${PN}-${PYVER}-disable_modules_and_ssl.patch
  66.     epatch ${FILESDIR}/${PN}-${PYVER}-mimetypes_apache.patch
  67.  
  68.     # prepends /usr/lib/portage/pym to sys.path
  69.     epatch ${FILESDIR}/${PN}-${PYVER}-add_portage_search_path.patch
  70.  
  71.     epatch ${FILESDIR}/${PN}-2.4.1-libdir.patch
  72.     sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
  73.         Lib/distutils/command/install.py \
  74.         Lib/distutils/sysconfig.py \
  75.         Lib/site.py \
  76.         Makefile.pre.in \
  77.         Modules/Setup.dist \
  78.         Modules/getpath.c \
  79.         setup.py || die
  80.  
  81.     # add support for struct stat st_flags attribute (bug 94637)
  82.     epatch ${FILESDIR}/python-2.4.1-st_flags.patch
  83.  
  84.     if tc-is-cross-compiler ; then
  85.         epatch "${FILESDIR}"/python-2.4.1-bindir-libdir.patch
  86.         epatch "${FILESDIR}"/python-2.4.1-crosscompile.patch
  87.     fi
  88. }
  89.  
  90. src_configure() {
  91.     # disable extraneous modules with extra dependencies
  92.     if use build; then
  93.         export PYTHON_DISABLE_MODULES="readline pyexpat dbm gdbm bsddb _curses _curses_panel _tkinter"
  94.         export PYTHON_DISABLE_SSL=1
  95.     else
  96.         use gdbm \
  97.             || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} gdbm"
  98.         use berkdb \
  99.             || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} dbm bsddb"
  100.         use readline \
  101.             || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} readline"
  102.         ( use !X || use !tcltk ) \
  103.             && PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _tkinter"
  104.         use ncurses \
  105.             || PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _curses _curses_panel"
  106.         use ssl \
  107.             || export PYTHON_DISABLE_SSL=1
  108.         export PYTHON_DISABLE_MODULES
  109.         echo $PYTHON_DISABLE_MODULES
  110.     fi
  111. }
  112.  
  113. src_compile() {
  114.     filter-flags -malign-double
  115.  
  116.     # Seems to no longer be necessary
  117.     #[ "${ARCH}" = "amd64" ] && append-flags -fPIC
  118.     [ "${ARCH}" = "alpha" ] && append-flags -fPIC
  119.  
  120.     # http://bugs.gentoo.org/show_bug.cgi?id=50309
  121.     if is-flag -O3; then
  122.        is-flag -fstack-protector-all && replace-flags -O3 -O2
  123.        use hardened && replace-flags -O3 -O2
  124.     fi
  125.  
  126.     export OPT="${CFLAGS}"
  127.  
  128.     local myconf
  129.     #if we are creating a new build image, we remove the dependency on g++
  130.     if use build && ! use bootstrap || use nocxx ; then
  131.         myconf="--with-cxx=no"
  132.     fi
  133.  
  134.     # super-secret switch. don't use this unless you know what you're
  135.     # doing. enabling UCS2 support will break your existing python
  136.     # modules
  137.     use ucs2 \
  138.         && myconf="${myconf} --enable-unicode=ucs2" \
  139.         || myconf="${myconf} --enable-unicode=ucs4"
  140.  
  141.     src_configure
  142.  
  143.     if tc-is-cross-compiler ; then
  144.         OPT="-O1" LDFLAGS="" \
  145.         ./configure --with-cxx=no || die "cross-configure failed"
  146.         emake python Parser/pgen || die "cross-make failed"
  147.         mv python hostpython
  148.         mv Parser/pgen Parser/hostpgen
  149.         make distclean
  150.         sed -i \
  151.             -e '/^HOSTPYTHON/s:=.*:=./hostpython:' \
  152.             -e '/^HOSTPGEN/s:=.*:=./Parser/hostpgen:' \
  153.             Makefile.pre.in || die
  154.     fi
  155.  
  156.     tc-export CXX
  157.     econf \
  158.         --with-fpectl \
  159.         --enable-shared \
  160.         `use_enable ipv6` \
  161.         --infodir='${prefix}'/share/info \
  162.         --mandir='${prefix}'/share/man \
  163.         --with-threads \
  164.         --with-libc='' \
  165.         ${myconf} || die
  166.     emake || die "Parallel make failed"
  167. }
  168.  
  169. src_install() {
  170.     dodir /usr
  171.     src_configure
  172.     make DESTDIR="${D}" altinstall  || die
  173.  
  174.     # install our own custom python-config
  175.     exeinto /usr/bin
  176.     newexe ${FILESDIR}/python-config-${PYVER} python-config
  177.  
  178.     # Use correct libdir in python-config
  179.     dosed "s:/usr/lib/:/usr/$(get_libdir)/:" /usr/bin/python-config
  180.  
  181.     # The stuff below this line extends from 2.1, and should be deprecated
  182.     # in 2.3, or possibly can wait till 2.4
  183.  
  184.     # seems like the build do not install Makefile.pre.in anymore
  185.     # it probably shouldn't - use DistUtils, people!
  186.     insinto /usr/$(get_libdir)/python${PYVER}/config
  187.     doins ${S}/Makefile.pre.in
  188.  
  189.     # While we're working on the config stuff... Let's fix the OPT var
  190.     # so that it doesn't have any opts listed in it. Prevents the problem
  191.     # with compiling things with conflicting opts later.
  192.     dosed -e 's:^OPT=.*:OPT=-DNDEBUG:' \
  193.             /usr/$(get_libdir)/python${PYVER}/config/Makefile
  194.  
  195.     # install python-updater in /usr/sbin
  196.     dosbin ${FILESDIR}/python-updater
  197.  
  198.     if use build ; then
  199.         rm -rf ${D}/usr/lib/python${PYVER}/{test,encodings,email,lib-tk,bsddb/test}
  200.     else
  201.         use elibc_uclibc && rm -rf ${D}/usr/lib/python${PYVER}/{test,bsddb/test}
  202.         use berkdb || rm -rf ${D}/usr/lib/python${PYVER}/bsddb
  203.         ( use !X || use !tcltk ) && rm -rf ${D}/usr/lib/python${PYVER}/lib-tk
  204.     fi
  205.  
  206.     prep_ml_includes usr/include/python${PYVER}
  207. }
  208.  
  209. pkg_postrm() {
  210.     python_makesym
  211.     python_mod_cleanup /usr/lib/python${PYVER}
  212.     [[ "$(get_libdir)" == "lib" ]] || python_mod_cleanup /usr/$(get_libdir)/python${PYVER}
  213. }
  214.  
  215. pkg_postinst() {
  216.     local myroot
  217.     myroot=$(echo $ROOT | sed 's:/$::')
  218.  
  219.     python_makesym
  220.     python_mod_optimize
  221.     python_mod_optimize -x site-packages -x test ${myroot}/usr/lib/python${PYVER}
  222.     [[ "$(get_libdir)" == "lib" ]] || python_mod_optimize -x site-packages -x test ${myroot}/usr/$(get_libdir)/python${PYVER}
  223.  
  224.  
  225.     # workaround possible python-upgrade-breaks-portage situation
  226.     if [ ! -f ${myroot}/usr/lib/portage/pym/portage.py ]; then
  227.         if [ -f ${myroot}/usr/lib/python2.3/site-packages/portage.py ]; then
  228.             einfo "Working around possible python-portage upgrade breakage"
  229.             mkdir -p ${myroot}/usr/lib/portage/pym
  230.             cp ${myroot}/usr/lib/python2.4/site-packages/{portage,xpak,output,cvstree,getbinpkg,emergehelp,dispatch_conf}.py ${myroot}/usr/lib/portage/pym
  231.             python_mod_optimize ${myroot}/usr/lib/portage/pym
  232.         fi
  233.     fi
  234.  
  235.     # try to upgrade to new python automatically - something to think about
  236.     #if [ "${ROOT}" = "/" ]; then
  237.     #    /usr/sbin/python-updater
  238.     #fi
  239.  
  240.     echo
  241.     ewarn
  242.     ewarn "If you have just upgraded from an older version of python you will need to run:"
  243.     ewarn
  244.     ewarn "/usr/sbin/python-updater"
  245.     ewarn
  246.     ewarn "This will automatically rebuild all the python dependent modules"
  247.     ewarn "to run with python-${PYVER}."
  248.     ewarn
  249.     ewarn "Your original Python is still installed and can be accessed via"
  250.     ewarn "/usr/bin/python2.x."
  251.     ewarn
  252.     ebeep 5
  253. }
  254.  
  255. src_test() {
  256.     # PYTHON_DONTCOMPILE=1 breaks test_import
  257.     unset PYTHON_DONTCOMPILE
  258.  
  259.     #skip all tests that fail during emerge but pass without emerge:
  260.     #(See bug# 67970)
  261.     local skip_tests="distutils global mimetools minidom mmap strptime subprocess tcl time urllib urllib2"
  262.  
  263.     for test in ${skip_tests} ; do
  264.         mv ${S}/Lib/test/test_${test}.py ${T}
  265.     done
  266.  
  267.     make test || die "make test failed"
  268.  
  269.     for test in ${skip_tests} ; do
  270.         mv ${T}/test_${test}.py ${S}/Lib/test/test_${test}.py
  271.     done
  272.  
  273.     einfo "Portage skipped the following tests which aren't able to run from emerge:"
  274.     for test in ${skip_tests} ; do
  275.         einfo "test_${test}.py"
  276.     done
  277.  
  278.     einfo "If you'd like to run them, you may:"
  279.     einfo "cd /usr/lib/python${PYVER}/test"
  280.     einfo "and run the tests separately."
  281. }
  282.